﻿using System;
using System.Collections.Generic;
using System.Data.Entity;
using InseSoft.Models;
using InseSoft.Models.Entities;
using Moq;

namespace InseSoft.Tests.Unit
{
    public class FakeDbContext: IInseContext
    {
        public FakeDbContext()
        {
            Empresas = new Mock<FakeDbSet<Empresa>>().Object;
            Lineas = new Mock<FakeDbSet<Linea>>().Object;
        }

        public void Dispose()
        {
        }

        public IDbSet<Cliente> Clientes { get; set; }
        public IDbSet<Cotizacion> Cotizaciones { get; set; }
        public IDbSet<Empresa> Empresas { get; set; }
        public IDbSet<Linea> Lineas { get; set; }
        public IDbSet<Material> Materiales { get; set; }
        public IDbSet<Orden> Ordenes { get; set; }
        public IDbSet<Permiso> Permisos { get; set; }
        public IDbSet<SolicitudCotizacion> SolicitudCotizaciones { get; set; }
        public IDbSet<TipoCambio> TipoCambios { get; set; }
        public IDbSet<TipoProducto> TipoProductos { get; set; }
        public IDbSet<Usuario> Usuarios { get; set; }
        public IDbSet<Vendedor> Vendedores { get; set; }
        
        public IEnumerable<IEntity> AddedOrModifiedEntities<T>()
        {
            throw new NotImplementedException();
        }

        public IDbSet<TEntity> Set<TEntity>() where TEntity : class
        {
            var setType = typeof(TEntity);
            if (setType == typeof(Linea))
                return Lineas as IDbSet<TEntity>;
            return Empresas as IDbSet<TEntity>;
        }
        public void Save()
        {
        }
        public bool HasPendingChanges()
        {
            return true;
        }
    }
}
